"""
函数说明：梯度上升算法测试函数
求函数f(x) = - x^2 + 4x 的极大值
parameter:
    无
return:
    x_new - 极大值
"""
def gradientTest():
    def f_prime(x_old): #f(x)的倒数
        return -2 * x_old + 4
    x_old = -1  #初始值，给定一个小于x_new的值
    x_new = 0   #梯度上深算法初始值，即从(0,0)开始
    alpha = 0.01    #学习效率，也就是步长，控制更新的幅度
    precision = 0.000000000001 #精度
    while abs(x_new - x_old) > precision:   #当精度大于precision的时候
        x_old = x_new
        x_new = x_old + alpha * f_prime(x_old)
    return x_new

if __name__ == '__main__':
    x_new = gradientTest()
    print(x_new)
